/*
 * drawFunctions.h
 *
 * Created: 08.12.2011 19:04:16
 *  Author: Halfmann
 */ 


#ifndef DRAWFUNCTIONS_H_
#define DRAWFUNCTIONS_H_

#include "globals.h"

void clearCube(void);
void setPixel(int x, int y, int z);
uint8_t getPixel(int x, int y, int z);
void clearPixel(int x, int y, int z);
uint8_t pixelInDimensions(int x, int y, int z);
void alterPixel(int x, int y, int z, int state);
void togglePixel(int x, int y, int z);
void setLayer_z(int z);
void clearLayer_z(int z);
void setLayer_x(int x);
void clearLayer_x(int x);
void setLayer_y(int y);
void clearLayer_y(int y);
void fillPattern(uint8_t pattern);
void drawFilledBox(int x1, int y1, int z1, int x2, int y2, int z2);
void drawSidewallBox(int x1, int y1, int z1, int x2, int y2, int z2);
void drawWireframeBox(int x1, int y1, int z1, int x2, int y2, int z2);
void shiftContent(uint8_t axis, int direction);
void mirrorYAxis(void);
void mirrorXAxis(void);
void mirrorZAxis(void);

void setLayer(char axis, unsigned char i);
void clearLayer(char axis, unsigned char i);

void argumentOrder(int ix1, int ix2, int *ox1, int *ox2);
int8_t byteLine(int start, int end);
int8_t flipByte (int8_t byte);

#define AXIS_X 0xFF
#define AXIS_Y 0xFE
#define AXIS_Z 0xFD


#endif /* DRAWFUNCTIONS_H_ */